package jmine.tec.report.base.persist.auditoria;

import jmine.tec.report.base.AbstractReportParameter;
import bancosys.tec.persist.audit.Auditable;
import bancosys.tec.persist.authorization.annotation.DisplayName;

/**
 * Parametro especifico do relatório de trilhas de auditoria.
 * 
 * @author Renan Kuroki
 * @date Jan 12, 2011
 */
public class TrilhaAuditoriaReportParameter extends AbstractReportParameter {

    private String usuario;

    private Class<? extends Auditable> classeAuditavel;

    /**
     * @return the usuario
     */
    public String getUsuario() {
        return this.usuario;
    }

    /**
     * @return the classeAuditavel
     */
    public Class<? extends Auditable> getClasseAuditavel() {
        return this.classeAuditavel;
    }

    /**
     * @param classeAuditavel the classeAuditavel to set
     */
    public void setClasseAuditavel(Class<? extends Auditable> classeAuditavel) {
        this.classeAuditavel = classeAuditavel;
    }

    /**
     * @param usuario the usuario to set
     */
    public void setUsuario(String usuario) {
        this.usuario = usuario;
    }

    /**
     * Método retorna o nome da classe definido pela annotation {@link DisplayName}
     * 
     * @return nome da classe
     */
    public String getClasseAuditavelNome() {
        if (this.classeAuditavel == null) {
            return "Todos";
        }
        DisplayName displayName = this.classeAuditavel.getAnnotation(DisplayName.class);
        return displayName.value();
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public String getReportFileNamePrefix() {
        return this.getClasseAuditavelNome();
    }
}
